package com.mmall.common;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.TimeUnit;

/**
 * @ClassName: TokenCache
 * @Title: mmall
 * @Package: com.mmall.common
 * @Description:创建本地缓存
 * @author: liuqingsong
 * @E-mail: lqs_email@163.com
 * @version: 创建时间: 2019/7/3 13:12
 */
@Deprecated
@Slf4j
public class TokenCache {

    //key前缀
    public static final String TOKEN_PREFIX="token_";

    //Builder设计模式（链式编程思想）创建Guava的本地缓存,LRU算法,缓存初始化容量，缓存最大容量，设置有效期
    private static LoadingCache<String,String> localCache= CacheBuilder.newBuilder().initialCapacity(1000).maximumSize(10000).expireAfterAccess(12, TimeUnit.HOURS).build(new CacheLoader<String, String>() {
        //默认的数据加载实现，当调用get取值的时候，如果key没有对应的值，就调用这个方法进行加载。
        @Override
        public String load(String s) throws Exception {
            return "null";//替换为字符串null
        }
    });

    public static void setKey(String key,String value){
        localCache.put(key,value);
    }

    public static String getKey(String key){
        String value=null;
        try {
            value=localCache.get(key);
            if ("null".equals(value)){
                return null;
            }
            return value;
        }catch (Exception e){
            log.error("localCache get error",e);
        }
        return null;
    }
}
